// app.js
App({
  globalData: {
    userInfo: null,
    forceLocalData: true, // 调试选项：强制使用本地数据
    categories: [
      { id: 1, name: '甜点', icon: 'cake' },
      { id: 2, name: '主食', icon: 'rice' },
      { id: 3, name: '饮品', icon: 'coffee' },
      { id: 4, name: '药方', icon: 'medicine' },
      { id: 5, name: '精油', icon: 'oil' },
      { id: 6, name: '代茶饮', icon: 'tea' }
    ],
    recipes: [
      { id: 1, name: '提拉米苏', category: '甜点', categoryId: '1', time: '45分钟' },
      { id: 2, name: '红烧牛肉面', category: '主食', categoryId: '2', time: '90分钟' },
      { id: 3, name: '柠檬薄荷茶', category: '饮品', categoryId: '3', time: '10分钟' }
    ],
    cloudReady: false,  // 云环境是否准备就绪
    cloudError: false   // 初始化出错标志
  },

  onLaunch: function() {
    console.log('App launching...');
    // 初始化或恢复缓存数据
    this.initLocalData();
  },
  
  // 初始化本地数据
  initLocalData: function() {
    try {
      // 尝试从本地存储读取分类和配方数据
      const savedCategories = wx.getStorageSync('categories');
      const savedRecipes = wx.getStorageSync('recipes');
      
      // 如果存在已保存的数据，则使用它
      if (savedCategories && savedCategories.length > 0) {
        this.globalData.categories = savedCategories;
        console.log('从本地存储加载了分类数据:', savedCategories.length + '条');
      } else {
        // 首次使用，保存默认数据到本地存储
        this.saveLocalData();
        console.log('使用默认分类数据');
      }
      
      if (savedRecipes && savedRecipes.length > 0) {
        this.globalData.recipes = savedRecipes;
        console.log('从本地存储加载了配方数据:', savedRecipes.length + '条');
      } else {
        // 首次使用，保存默认配方到本地存储
        this.saveLocalData();
        console.log('使用默认配方数据');
      }
      
      console.log('本地数据初始化完成');
    } catch (error) {
      console.error('初始化本地数据失败:', error);
    }
  },
  
  // 保存数据到本地存储
  saveLocalData: function() {
    try {
      console.log('开始保存数据到本地存储...');
      
      // 确保序列化前数据是有效的
      if (!Array.isArray(this.globalData.categories)) {
        console.error('保存失败：categories不是数组');
        this.globalData.categories = [];
      }
      
      if (!Array.isArray(this.globalData.recipes)) {
        console.error('保存失败：recipes不是数组');
        this.globalData.recipes = [];
      }
      
      // 数据预处理：确保所有必要的字段都存在
      const processedRecipes = this.globalData.recipes.map(recipe => ({
        id: recipe.id,
        name: recipe.name || '',
        categoryId: (recipe.categoryId || '').toString(),
        category: recipe.category || '',
        difficulty: recipe.difficulty || '中等',
        time: recipe.time || '',
        mainIngredients: Array.isArray(recipe.mainIngredients) ? recipe.mainIngredients : [],
        additionalIngredients: Array.isArray(recipe.additionalIngredients) ? recipe.additionalIngredients : [],
        steps: Array.isArray(recipe.steps) ? recipe.steps : [],
        tips: recipe.tips || '',
        imageUrl: recipe.imageUrl || '',
        createTime: recipe.createTime || new Date().toISOString(),
        updateTime: recipe.updateTime
      }));
      
      // 保存处理后的数据
      wx.setStorageSync('categories', this.globalData.categories);
      wx.setStorageSync('recipes', processedRecipes);
      
      // 更新全局数据
      this.globalData.recipes = processedRecipes;
      
      console.log('数据已保存到本地存储:', {
        categories: this.globalData.categories.length,
        recipes: processedRecipes.length
      });
    } catch (error) {
      console.error('保存数据到本地存储失败:', error);
      
      // 尝试清空并重新保存
      try {
        console.log('尝试清空并重新保存...');
        wx.removeStorageSync('categories');
        wx.removeStorageSync('recipes');
        
        wx.setStorageSync('categories', this.globalData.categories);
        wx.setStorageSync('recipes', this.globalData.recipes);
        
        console.log('清空后重新保存成功');
      } catch (retryError) {
        console.error('重试保存失败:', retryError);
        throw new Error('数据保存失败，请检查存储空间');
      }
    }
  },
  
  // 获取用户openid (本地模式下不使用)
  getOpenid: function() {
    // 本地模式下不调用云函数
    console.log('本地模式，不获取openid');
  }
})
